﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TheBullysStore.Models;
using System.Json;
using log4net;
using TheBullysStore.Models.ModuloServicios.MantenimientoCorrectivo;
using TheBullysStore.Models.ModuloServicios.Incidencia;
using TheBullysStore.Controllers.ModuloServicios;
using TheBullysStore.Models.ModuloAdministracion.TipoMoneda;
using TheBullysStore.Models.ModuloAdministracion.Edificio;
using TheBullysStore.Models.ModuloAdministracion.Mantenible;
using TheBullysStore.Models.ModuloAdministracion.Proveedor;
using TheBullysStore.Models.ModuloAdministracion.DepartamentoPeru;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

namespace TheBullysStore.Controllers.ModuloServicios.MantenimientoCorrectivo
{
    public class MantenimientoCorrectivoController : Controller
    {
        //
        // GET: /MantenimientoCorrectivo/
        private static ILog log = LogManager.GetLogger(typeof(MantenimientoCorrectivoController));
        private TheBullysStoreDB db = new TheBullysStoreDB();
        MantenimientoCorrectivoFacade mantenimientocorrectivoFacade = new MantenimientoCorrectivoFacade();
        TipoMonedaFacade tipomonedaFacade = new TipoMonedaFacade();
        IncidenciaFacade incidenciaFacade = new IncidenciaFacade();
        EdificioFacade edificioFacade = new EdificioFacade();
        MantenibleFacade mantenibleFacade = new MantenibleFacade();
        ProveedorFacade proveedorFacade = new ProveedorFacade();
        DepartamentoPeruFacade departamentoPeruFacade = new DepartamentoPeruFacade();
        EdificioDAO edificioDAO = new EdificioDAO();

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult MantenimientoCorrectivo()
        {
            return View();
        }

        public ActionResult RegistrarMantenimientoCorrectivo()
        {
            return View();
        }

        public ActionResult BuscarMantenimientoCorrectivo()
        {
            return View();
        }

        [HttpPost]
        public JsonResult registrarMantenimientoCorrectivo(MantenimientoCorrectivoBean mantenimientocorrectivo)
        {
            try
            {
                //if (mantenimientocorrectivoFacade.Existemantenimientocorrectivo(mantenimientocorrectivo))
                //{
                //    return Json(new { me = "El mantenimientocorrectivo ya existe" });
                //}

                string conexion = mantenimientocorrectivoFacade.Registrarmantenimientocorrectivo(mantenimientocorrectivo);
                return Json(new { me = "Se ingreso correctamente" });
            }
            catch (Exception ex)
            {
                log.Error("Registrar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al registrar" });
            }
            
        }

        [HttpPost]
        public JsonResult buscarMantenimientoCorrectivo(MantenimientoCorrectivoBean mantenimientocorrectivo)
        {
            try{
            List<MantenimientoCorrectivoBean> listaMantenimientoCorrectivo = mantenimientocorrectivoFacade.Listarmantenimientocorrectivo(mantenimientocorrectivo);

            return Json(new { listaMantenimientoCorrectivo });
        }
            catch (Exception ex) {
                log.Error("Buscar Edificio - GET(EXCEPTION):", ex);
                return Json(new { listaEdificio = "Ocurrió un error al buscar" });
            }
            
        }

        [HttpPost]
        public JsonResult eliminarMantenimientoCorrectivo(MantenimientoCorrectivoBean mantenimientocorrectivo)
        {
            try{
            
            string conexion = mantenimientocorrectivoFacade.Eliminarmantenimientocorrectivo(mantenimientocorrectivo);

                return Json(new { me = "Se eliminó correctamente" });
             }
            catch (Exception ex)
            {
                log.Error("Eliminar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al eliminar" });
            }            
        }

        //?????????????????????????????????????????????????????modificar????????????????????????????????????????????????????????????????????????????????????????????????????????
        [HttpPost]
        public JsonResult modificarMantenimientoCorrectivo(MantenimientoCorrectivoBean mantenimientocorrectivo)
        {
            try{
            
            string conexion = mantenimientocorrectivoFacade.Modificarmantenimientocorrectivo(mantenimientocorrectivo);

            
                
                return Json(new { me = "Se modificó correctamente " + mantenimientocorrectivo.NombreMantenimientoCorrectivo });
            }
            catch (Exception ex)
            {
                log.Error("Modificar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }   
        }

        [HttpPost]
        public JsonResult cargarTipoMonedas(TipoMonedaBean tipomoneda)
        {
            
            try{
            List<TipoMonedaBean> listaTipoMoneda = tipomonedaFacade.ListarTipoMoneda(tipomoneda);
            return Json(new { listaTipoMoneda });
            }
            catch (Exception ex)
            {
                log.Error("Modificar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }  
        }

        public JsonResult cargarIncidencias(IncidenciaBean incidencia)
        {
           try{

            List<IncidenciaBean> listaIncidencia = incidenciaFacade.Listarincidencia(incidencia);

            //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + departamento.conexion);

            return Json(new { listaIncidencia });

            }
            catch (Exception ex)
            {
                log.Error("Modificar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }  
        }

        [HttpPost]
        public JsonResult cargarEdificios(EdificioBean edificio)
        {
            
            try{
            //System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + departamento.Nombre);

            List<EdificioBean> listaEdificio = edificioFacade.Listaredificio(edificio);

            //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + departamento.conexion);

            return Json(new { listaEdificio });
            }
            catch (Exception ex)
            {
                log.Error("Modificar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }  
        }

        [HttpPost]
        public JsonResult cargarMantenibles(MantenibleBean mantenible)
        {
            try{
            //System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + departamento.Nombre);

            List<MantenibleBean> listaMantenible = mantenibleFacade.ListarMantenibleEdificio(mantenible);

            //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + departamento.conexion);

            return Json(new { listaMantenible });
            }
            catch (Exception ex)
            {
                log.Error("Modificar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }  
        }

        [HttpPost]
        public JsonResult cargarProveedores(ProveedorBean proveedor)
        {
            try{
            //System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + departamento.Nombre);

            List<ProveedorBean> listaProveedor = proveedorFacade.ListarProveedor(proveedor);

            //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + departamento.conexion);

            return Json(new { listaProveedor });
            }
            catch (Exception ex)
            {
                log.Error("Modificar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }  
        }

        [HttpPost]
        public JsonResult cargarDepartamentos(DepartamentoPeruBean departamento)
        {
            try{
            //System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + departamento.Nombre);

            List<DepartamentoPeruBean> listaDepartamentoPeru = departamentoPeruFacade.ListarDepartamentoPeru(departamento);

            //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + departamento.Conexion);

            return Json(new { listaDepartamentoPeru });
            }
            catch (Exception ex)
            {
                log.Error("Modificar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }  
        }

        [HttpPost]
        public JsonResult setearEdificio(EdificioBean edificio)
        {
            try
            {
                List<EdificioBean> llegadaSeteo = edificioDAO.SetearEdificio(edificio);
                return Json(new { llegadaSeteo });
            }
            catch (Exception ex)
            {
                log.Error("setearEdificio - GET(EXCEPTION):", ex);
                return Json(new { llegadaSeteo = "Ocurrió un error al eliminar" });
            }
        }

    }
}
